#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include "stack.h"

//创建新堆栈 存储程序指令
Stack *stack_new(){
     Stack *stack=malloc(sizeof(Stack));
     stack->size = 0;
     stack->content = 0;
     return stack;
}

//释放堆栈内存 清空程序指令
void stack_free(Stack *stack){
    if(stack->size > 0){
        free(stack->content);
    }
    free(stack);
}


void stack_push(Stack *stack, void *item) {
    stack->size++;
    //根据空格，按程序单词扩展分配内存，移动指针到栈底，
    stack->content = realloc(stack->content, stack->size * sizeof *stack->content);
    //将新输入的程序单词押入栈底,等待语法分析，先进先出
    stack->content[stack->size - 1]= item;
}